import Vue from 'vue'
import Vuex from "vuex"
Vue.use(Vuex)

// new一个vuex实例对象，并将其暴露出去
export default new Vuex.Store({
    state: {
        count: 0
    },
    mutations: {
        addcount(state) {
            state.count++
        },
        addn(state, step) {
            state.count += step
        },
        subcount(state) {
            state.count--
        },  
        subn(state, step) {
            state.count -= step
        },

    },
    actions: {
        //context相当于 Vuex.Store实例
        asyncadd(context) {
            setInterval(() => {
                //调用commit触发add count函数
                //action中不能直接修改state中的数据，必须通过mutations
                // 来间接修改
                context.commit('addcount')
            }, 1000);
        },
        asyncsub(context) {
            setInterval(() => {
                //调用commit触发add count函数

                //action中不能直接修改state中的数据，必须通过mutations
                // 来间接修改
                context.commit('subcount')
            }, 1000);
        }
    },
    getters: {
        //相当于computed计算属性，只包装数据
        show: state => "当前count的值为：【" + state.count + "】"
    } 
})